Шифри Афінний і RSA.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Курсова робота
Предмет:
Інші

Частина тексту файла

      Завдання 1. Симетричне шифрування Вибрати ключі та розробити програму для зашифрування файлу даних заданим афінним шифром. Тип афінного шифру визначається останньою цифрою і НЗК (Таблиця 1). Об'єм алфавіту NА визначається передостанньою цифрою j НЗК і дорівнює 2(5+і) при j ≠ 3 і 215 при j = 3. Номер залікової книжки 90085 Отже тип афінного шифру - 5 mod6=5 (афінний 3-го порядку) Об’єм алфавіту 2(13) Програма шифрування #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <math.h> const size_t small_buff = 20; const size_t big_buff = 102400; void main() { clrscr(); char text[small_buff]; char bigtext[big_buff]; FILE *infile = fopen( "f:\\cc.txt", "r" ); /*відкриваєм файл*/ size_t read_len = 0; size_t file_len = 0; while( read_len = fread(text, 1, small_buff, infile ) ) /*знаходимо довжину файлу*/ { memcpy( bigtext + file_len, text, read_len ); file_len += read_len; } int j,a3,a1,a2,i; int klych1[]={1,1,1,0,0,1,1,1,1,0,0,0,0}; /*задаємо значення ключів і зсувів*/ int klych2[]={0,1,1,0,0,1,1,1,1,0,0,0,0}; int klych3[]={0,1,1,0,0,1,1,0,1,0,0,0,0}; int zsyv1[]={0,1,1,0,0,1,1,1,1,0,0,0,0}; int zsyv2[]={0,1,1,0,0,1,1,1,1,0,0,0,0}; int zsyv3[]={0,1,1,0,0,1,1,1,1,0,0,0,0}; int kk,b1,b2,b3,k[13]; char zyb1; kk=pow(2,13); for(i=0;i<13;i++) /*очищуєм масив*/ {k[i]=0;} for(i=0;i<13;i++) /*знаходимо значення ключа 1-го*/ {{ if (1==klych1[i]) k[i]=pow(2,i); else k[i]=0;} a1=a1+k[i];} for(i=0;i<13;i++) /*знаходимо значення зсуву 1-го*/ {{ if (1==zsyv1[i]) k[i]=pow(2,i); else k[i]=0;} b1=b1+k[i];} for(i=0;i<13;i++) /*знаходимо значення ключа 2-го*/ {{ if (1==klych2[i]) k[i]=pow(2,i); else k[i]=0;} a2=a2+k[i];} for(i=0;i<13;i++) /*знаходимо значення зсуву 2-го*/ {{ if (1==zsyv2[i]) k[i]=pow(2,i); else k[i]=0;} b2=b2+k[i];} for(i=0;i<13;i++) /*знаходимо значення ключа 3-го*/ {{ if (1==klych3[i]) k[i]=pow(2,i); else k[i]=0;} a3=a3+k[i];} for(i=0;i<13;i++) /*знаходимо значення зсуву 3-го*/ {{ if (1==zsyv3[i]) k[i]=pow(2,i); else k[i]=0;} b3=b3+k[i];} kk=pow(2,13); for(j=0;j<file_len-3;j=j+3) /*шифровуєм текст*/ { bigtext[j]=bigtext[j]*a1+ bigtext[j+3]*a2+ bigtext[j+6]*a3+b1; bigtext[j]=bigtext[j]%kk; bigtext[1+j]=bigtext[1+j]*a1+ bigtext[1+j+3]*a2+ bigtext[1+j+3+3]*a3+b2; bigtext[1+j]=bigtext[1+j]%kk; bigtext[2+j]=bigtext[2+j]*a1+ bigtext[2+j+3]*a2+ bigtext[2+j+3+3]*a3+b3; bigtext[2+j]=bigtext[2+j]%kk; } FILE *outfile = fopen( "f:\\resul.txt", "w" ); /*створюєм файл з шифртекстом*/ fwrite( bigtext, 1, file_len, outfile ); /*записуєм шифр текст в файл*/ fclose( infile ); fclose( outfile ); } текст повідомлення: текст для за шифрування крипто текст: ецйшкечрст.бзчздччзфщяч Блок схема програми  а) Зашифрувати Слово відкритого тексту за алгоритмом RSA. Слово визначається останньою буквою і НЗК і задане в Таблиці 2. Для генерування ключів використати числа р та q, які визначаються передостанньою цифрою j НЗК і задані в Таблиці 3. Букви тексту замінити натуральними числами, що відповідають порядковому номеру букви в українському алфавіті. Наприклад А=00, Б=01, В=02 і т.д. отже і=5 тоді потрібно зашифрувати слово (хід) де Р=7 ,а Ч=17 n=p*q=7*13=91 f(n)=n-p-q+1=91-7-13+1=72 e=3 d=19 шифрування слова д=25,в=11,а=05 25^3mod91=64 11^3mod91=57 05^3mod91=34 зашифрований текст: 64 57 34 б) Скласти програму зашифрування файлу за алгоритмом RSA. Об'єм алфавіту кодування - na . Величина блоку - 4 ]og2 NA [. Величина блоку =16 об’єм алфавіту=13 ТЕОРИТИЧНІ ВІДОМОСТІ   Програма шифрування #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <math.h> const size_t small_buff = 20; const size_t big_buff = 102400...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини